/*
* Copyright (c) 2011 adVolition
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* Except as contained in this notice, the name(s) of the above
* copyright holders shall not be used in advertising or otherwise to
* promote the sale, use or other dealings in this Software without prior
* written authorization.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
 */

package userinterface;
import java.io.*;

/**
 * This class defines the file that contains the EEML-formated instructions for
 * the run.
 */
public class DataFile {

  private File _file;

  public DataFile(String fileName) {
      _file = new File(fileName);
  }

  /**
   * Reads and returns data from the datafile.
   * @return
   */
  public String read() {
      StringBuilder contents = new StringBuilder();
      
      try {

          BufferedReader input =  new BufferedReader(new FileReader(_file));
          
          try {
              String line = null;
              
              while (( line = input.readLine()) != null){
                  contents.append(line);
                  contents.append(System.getProperty("line.separator"));
                  //System.out.println("file output: " + line);
              }
          }
          finally {
              input.close();
          }
      }
      catch (IOException ex){
          ex.printStackTrace();
          System.out.println("There was a problem:" + ex);
      }
      return contents.toString();
  }


/**
 * Replaces the conents of the data file with the output string.
 * @param output
 */
public void write(String output) {
    BufferedWriter out;
    String read;

    try {
        out = new BufferedWriter(new FileWriter(_file));

        //Write out the specified string to the file
        out.write(output);

        //flushes and closes the stream
        out.close();

    }catch(IOException e){
        System.out.println("There was a problem:" + e);
    }
}




  /** Simple test harness.   */
  /*public static void main (String... aArguments) throws IOException {
    File testFile = new File("C:\\Temp\\blah.txt");
    System.out.println("Original file contents: " + getContents(testFile));
    setContents(testFile, "The content of this file has been overwritten...");
    System.out.println("New file contents: " + getContents(testFile));
  }*/
}
